package com.fxust.utils;

import com.fxust.common.Constant;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.io.*;
import java.net.URL;

/**
 * @auto johnking
 * @create 2017-12-17 上午11:34
 **/
public class FileUtils {

    private static Logger logger = LoggerFactory.getLogger(FileUtils.class);

    /**
     * 根据文件名获取绝对路径
     * @param fileName
     * @return
     */
    private static String getFilePath(String fileName) {
        URL url = ClassLoader.getSystemResource(fileName);
        return url.getPath();
    }

    /**
     * 获取配置文件路径
     *
     * @author fgq 2017年8月7日 下午7:24:24
     * @return
     */
    public static String getDataSourcePropertiesFilePath() {
        return getFilePath(Constant.FileResource.DATASOURCE_CFG);
    }

    /**
     * 获取版本信息配置文件
     * @author fgq 2017年11月25日 下午4:08:05
     * @return
     */
    public static String getVersionPropertiesFilePath() {
        return getFilePath(Constant.FileResource.VERSION_CFG);
    }

    /**
     * 获取静态sql配置文件路径
     * @return
     */
    public static String getSqlConfigXmlPath() {
        return getFilePath(Constant.FileResource.STATICSQL_CFG);
    }

    public static String getLogConfigPath(){
        return getFilePath(Constant.FileResource.LOGGER_CFG);
    }
    /**
     * 文件转byte数据
     * @param file
     * @return
     */
    public static byte[] File2byte(File file) {
        byte[] buffer = null;
        try {
            FileInputStream fis = new FileInputStream(file);
            ByteArrayOutputStream bos = new ByteArrayOutputStream();
            byte[] b = new byte[1024];
            int n;
            while ((n = fis.read(b)) != -1) {
                bos.write(b, 0, n);
            }
            buffer = bos.toByteArray();
            fis.close();
            bos.close();
        } catch (FileNotFoundException e) {
            logger.error("文件不存在", e);
        } catch (IOException e) {
            logger.error("文件转二进制错误", e);
        }
        return buffer;
    }

    public static void main(String[] args) {
        String path = FileUtils.getVersionPropertiesFilePath();
        System.out.println(path);
    }
}
